package utils

import "sync"

type MultiGroupTaskRec struct {
	groupID interface{} // 传入时写入一次
	err     error       // 执行者 通知Error

	arg interface{}

	// 传入参数
	Args      []interface{}
	paramFunc interface{}
	Cb        func(sender *MultiGroupTaskRec)
	CallStack string
}

func (this *MultiGroupTaskRec) GetGroupID() interface{} {
	return this.groupID
}

func (this *MultiGroupTaskRec) GetError() error {
	return this.err
}

func (this *MultiGroupTaskRec) CallBack() {
	if GoFunCatchException {
		defer PanicHandler()
	}
	this.Cb(this)
	this.Close()
}

func (this *MultiGroupTaskRec) Close() {
	this.CallStack = EMPETY_STRING
	this.groupID = nil
	this.Args = nil
	this.Cb = nil
	this.err = nil
}

// utils_func中已经存在NewSyncPool 函数
func NewSyncPoolEx(newFunc func() interface{}) *sync.Pool {
	pool := new(sync.Pool)
	if newFunc != nil {
		pool.New = newFunc
	}
	return pool
}
